package com.foreknow.demo21;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * 键值集合(Map<K,V>接口)：将键映射到值的对象。一个映射不能包含重复的键；每个键最多只能映射到一个值。
 * K: key(键)  V:value(值)
 * 它是以键值对的方式来保存元素的。 获取元素可以根据key就可以获取到对应的value
 * 接口下的实现： 1. HashMap    2.TreeMap 具有排序功能
 * 使用： Map<K,V> map = new HashMap<>();
 *
 */
public class MapDemo {
  public static void main(String[] args) {
    //创建一个Map集合
    Map<String,Person> map = new HashMap<>();

    Person person1 = new Person();
    person1.setId(1);
    person1.setName("fender");

    Person person2 = new Person();
    person2.setId(2);
    person2.setName("jazz");

    Person person3 = new Person();
    person3.setId(3);
    person3.setName("blues");

    //向Map集合中添加元素
    map.put("p1",person1);
    map.put("p2",person2);
    map.put("p3",person3);

    //如何从Map集合中获取到我们想要的对象，可以根据key来获取
    Person pp = map.get("p2");
    System.out.println(pp.getId()+"--"+pp.getName());


    System.out.println("-------------如何对map集合进行遍历---------------");
    Set<Map.Entry<String,Person>> set = map.entrySet();
    Iterator<Map.Entry<String,Person>> it = set.iterator();
    while (it.hasNext()) {
      Map.Entry<String,Person> entry = it.next();
      String key = entry.getKey();
      Person person = entry.getValue();
      System.out.println(key+"--"+person.getId()+"--"+person.getName());
    }



  }
}
